home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 6 / QRZ Ham Radio Callsign Database - Volume 6.iso / pc / files / mac / proj_a2.hqx / Project Mac - A2 / Satellite AZ_EL Coord. Cal. (.txt) < prev    next >
Encoding:
AmigaBASIC Source Code  |  1978-04-27  |  8.0 KB  |  191 lines

  1. REM    This program computes azimuthal and elevation aiming coordinates
  2. REM and other orbital data for an earth satellite orbiting in an approximately 
  3. REM circular, sun synronous, polar orbit, such as AMSAT's OSCAR-6, -7, or -8.
  4. REM     Originally written in 1976, additional information is available from
  5. REM the author, Earl Skelton, N3ES; 6311 29th Pl., NW, Wash., DC 20015-2221
  6. REM telephones:  (202)-767-3014 (office); (202)-363-1406 (home)
  7. REM
  8. REM    DEFINITIONS:
  9. REM        ALT = MEAN SATELLITE ALTITUDE (in km)
  10. REM        AZM = AZIMUTHAL ANGLE BETWEEN QTH AND SSP
  11. REM        DATE = GMT DATE OF ASCENDING NODE, e.g., 08-APR-76
  12. REM        DELT = TIME INTERVAL BETWEEN OUTPUT DATA (DELTA T) (in min.)
  13. REM        DIST = GREAT CIRCLE DISTANCE BETWEEN QTH AND SSP (in km)
  14. REM        EARTHR = POLAR RADIUS OF EARTH (in km)
  15. REM        ELEV = ANTENNA ELEVATION ANGLE (COMPLEMENT OF POLAR)
  16. REM        QINC = ORBITAL INCLINATION ANGLE
  17. REM        QLAT = LATITUDINAL POSITION OF SSP
  18. REM        QLON = LONGITUDINAL POSITION OF SSP
  19. REM        QTHLAT = LATITUDINAL POSITION OF QTH
  20. REM        QTHLON= LONGITUDINAL POSITION OF QTH
  21. REM        QLONX = WEST LONGITUDINAL CROSSING OF ASCENDING NODE
  22. REM        NR = ORBITAL REVOLUTION NUMBER (if neg., all results printed)
  23. REM        ORBINC = ORBITAL LONGITUDINAL INCREMENT
  24. REM        PERIOD = SATELLITE PERIOD (in min)
  25. REM        POLAR = POLAR ANGLE (MEASURED FROM VERT.) FROM QTH TO SATELLITE
  26. REM        RANGE = LINE-OF-SIGHT DISTANCE FROM QTH TO SATELLITE
  27. REM        TIMEZ = UTC TIME OF ASCENDING NODE (HR,MN,SC)
  28. REM        TOF = ROUND TRIP TIME-OF-FLIGHT OF SIGNAL (in min) 
  29. REM        VLITE = SPEED OF LIGHT IN FREE SPACE (in km/sec)
  30. REM
  31. REM        SET CONSTANTS
  32. REM        USE POLAR RADIUS OF EARTH; EQUATORIAL RADIUS = 6378.160 km
  33. REM
  34. 1000 PI=5.30795e-315:CON=PI/180:EARTHR=6356.91:VLITE=299.793
  35. 1100 DIM III(300),AAA(9,300),JJJ(300),BBB(9,300)
  36. 1105 INPUT "If results are to be printed on line-printer, as well as screen, enter '1'",NPRINT
  37. 1200 INPUT "Program is set to run for OSCAR-7 or -8 or RS-1, ENTER NUMBER:",NSAT
  38. 1300 INPUT "Enter time interval between calculations in min. (=delta-T):",DELT
  39. 1400 IF NSAT=1, THEN GOTO 1800
  40. 1500 IF NSAT=7, THEN GOTO 1900
  41. 1600 IF NSAT=8, THEN GOTO 2000
  42. 1700 PRINT "UNRECOGNIZED SATELLITE NUMBER - RUN ABORTED."
  43. 1705 IF NPRINT=1, THEN LPRINT "UNRECOGNIZED SATELLITE NUMBER - RUN ABORTED."
  44. 1710 GOTO 9999
  45. 1800 PERIOD=102:ORBINC=25.5:QINC=82:ALT=950:GOTO 2100
  46. 1900 PERIOD=5.33502e-315:ORBINC=5.32466e-315:QINC=101.7:ALT=1460:GOTO 2100
  47. 2000 PERIOD=5.33407e-315:ORBINC=25.8087:QINC=99.146:ALT=909.583:GOTO 2100
  48. 2100 QTHLON=76.951:QTHLAT=38.835
  49. 2200 INPUT "Calculations based on QTH in Wash., DC.  Change this?  (NO=0)",NO
  50. 2200 IF NO><0, THEN INPUT "ENTER NEW QTH COORD. (LON.,LAT.)", QTHLON,QTHLAT
  51. 2300 SLATTH=SIN(QTHLAT*CON):CLATTH=COS(QTHLAT*CON)
  52. 2400 PRINT "If orbit number is positive, only 'visible' coordinates are printed."
  53. 2500 PRINT "If orbit number is negative, all coordinates are printed."
  54. 2600 INPUT "Enter starting orbit number:",NR
  55. 2700 INPUT "Enter date as 'mm/dd/yy':",DATE1$:DATE$=DATE1$
  56. 2800 INPUT "Enter time of ascending node as 'HR,MIN,SEC':",HR,MN,SC
  57. 2900 INPUT "Enter longitudinal in degrees west:",QLONX
  58. 3000 INPUT "Enter number of orbits to be calculated:",NADD
  59. 3010 MN=MN+SC/60:HR0=HR: MN0=MN
  60. REM IF NR<0, THEN PRINT ALL ORBITAL DATA, ELSE PRINT ONLY VISIBLE DATA
  61. 3020 K=0
  62. 3030 K=K+1
  63. 3040 FOR L=1 TO 9
  64. 3050 FOR J=1 TO 300
  65. 3060 AAA(L,J)=0: BBB(L,J)=0: III(J)=0: JJJ(J)=0
  66. 3070 NEXT J
  67. 3080 NEXT L
  68. 3100 IF K>1, THEN MN=MN+PERIOD
  69. 3105 IF MN<60, THEN GOTO 3130
  70. 3110 IF MN=>60, THEN MN=MN-60: HR=HR+1: GOTO 3105
  71. 3130 IF K>1 AND NR>0, THEN NR=NR+1
  72. 3140 IF K>1 AND NR<0, THEN NR=NR-1
  73. 3150 IF K>1, THEN QLONX=QLONX+ORBINC: HR0=HR: MN0=MN
  74. 3160 IF QLONX>360, THEN QLONX=QLONX-360
  75. 3170 NSITE=0: T=-DELT: J=0: TZ=MN-DELT: HRZ=HR: PERO4=PERIOD/4: TPERO4=3*PERO4
  76. REM     BEGIN TIMING LOOP HERE, END AT 4180
  77. 3180 T=T+DELT: J=J+1
  78. 3190 XXX=2*PI*T/PERIOD
  79. 3200 SLAT=(SIN(QINC*CON)*(SIN(XXX))): CLAT=SQR(1-SLAT^2)
  80. 3210 QLAT=ATN(SLAT/CLAT)/CON
  81. 3220 CLON=(COS(XXX))/CLAT: SLON=SQR(1-CLON^2)
  82. 3230 QLON=ATN(SLON/CLON)/CON
  83. 3240 IF T>PERO4 AND T<TPERO4, THEN QLON=QLON+180
  84. 3250 QLON=QLON+QLONX+T/4
  85. 3260 IF QLON>360, THEN QLON=QLON-360
  86. REM    INTRODUCE QUADRANT FUNCTIONS TO CHECK PROPER PHASE
  87. 3270 CKLAT=QLAT-QTHLAT: CKLON=QLON-QTHLON
  88. 3280 A=(QLON-QTHLON)*CON
  89. 3290 COSC=((SLAT*SLATTH)+(CLAT*CLATTH*COS(A)))
  90. 3300 RANGE=SQR((2*(EARTHR^2+(EARTHR*ALT))*(1-COSC))+ALT^2)
  91. 3310 TOF=2*RANGE/VLITE
  92. 3320 SINC=SQR(1-(COSC^2))
  93. 3330 C=ATN(SINC/COSC)
  94. 3340 IF COSC<0, THEN C=C+PI
  95. 3350 DIST=EARTHR*C
  96. 3360 COSBET=((SLAT-(SLATTH*COSC))/(CLATTH*SINC))
  97. 3370 SINBET=SQR(1-(COSBET^2))
  98. 3380 BETA=ATN(SINBET/COSBET)/CON
  99. REM    SET PHASE OF ASM ANGLE
  100. 3390 NCBTST=1: IF COSBET<0, THEN NCBTST=-1
  101. 3395 NATST=1: A=A/CON
  102. 3400 IF A=>-180 AND A<0, THEN NATST=-1
  103. 3410 IF A=>180 AND A<360, THEN NATST=-1
  104. REM    IF NATST=-1 AND NCBTST=+1, THEN AZM=BETA
  105. 3420 AZM=BETA
  106. 3430 IF NATST=-1 AND NCBTST=-1, THEN AZM=180+BETA
  107. 3440 IF NATST=1 AND NCBTST=-1, THEN AZM=180-BETA
  108. 3450 IF NATST=1 AND NCBTST=1, THEN AZM=360-BETA
  109. 3460 ELEV=ATN((COSC-(EARTHR/(EARTHR+ALT)))/SINC)/CON
  110. 3470 TZ=TZ+DELT
  111. 3480 IF TZ=>60, THEN TZ=TZ-60:HRZ=HRZ+1
  112. 3490 IF ELEV>0 AND ELEV<90, THEN GOTO 4000, :ELSE GOTO 4100
  113. 4000 NSITE=NSITE+1
  114. 4010 III(NSITE)=HRZ
  115. 4020 AAA(1,NSITE)=TZ
  116. 4030 AAA(2,NSITE)=QLAT
  117. 4040 AAA(3,NSITE)=QLON
  118. 4050 AAA(4,NSITE)=DIST
  119. 4060 AAA(7,NSITE)=AZM
  120. 4070 AAA(8,NSITE)=ELEV
  121. 4080 AAA(5,NSITE)=RANGE
  122. 4090 AAA(6,NSITE)=TOF
  123. 4100 JJJ(J)=HRZ
  124. 4110 BBB(1,J)=TZ
  125. 4120 BBB(2,J)=QLAT
  126. 4130 BBB(3,J)=QLON
  127. 4140 BBB(4,J)=DIST
  128. 4150 BBB(5,J)=AZM
  129. 4160 BBB(6,J)=ELEV
  130. 4170 IF T<PERIOD, THEN GOTO 3180
  131. 4180 XNSITE=NSITE*DELT: JEND=J
  132. REM    OUTPUT RESULTS
  133. 4199 PRINT "ORBITAL CALCULATIONS FOR OSCAR-",NSAT:IF NPRINT=1, THEN LPRINT "ORBITAL CALCULATIONS FOR OSCAR-",NSAT
  134. 4200 IF NSITE=0, THEN PRINT "ORBIT #",:PRINT USING "####";NR,:PRINT" OUT OF RANGE"
  135. 4205 IF NPRINT=1 AND NSITE=0, THEN LPRINT "ORBIT #",:LPRINT USING"####";NR,:LPRINT" OUT OF RANGE"
  136. 4210 IF NSITE=0, THEN GOTO 4380
  137. 4221 IF NPRINT=1, THEN LPRINT "Orbit #",:LPRINT USING "####";NR,
  138. 4222 IF NPRINT=1, THEN LPRINT "; DATE/TIME:  ",DATE$,:LPRINT USING "##";HR0,:LPRINT USING "###.#";MN0
  139. 4223 IF NPRINT=1, THEN LPRINT "WEST LONG. CROSSING = ",:LPRINT USING "###.#";QLONX
  140. 4224 IF NR<0, THEN GOTO 4342
  141. 4225 PRINT " HR  MIN     LAT.      LON.   DIST.  R(km) TOF(msec)     AZ     EL"
  142. 4227 IF NPRINT=1, THEN  LPRINT
  143. 4230 IF NPRINT=1, THEN LPRINT " HR  MIN    LAT.    LON.   DIST.   R(km) TOF(msec)       AZ   EL"
  144. 4250 FOR J=1 TO NSITE
  145. 4256 PRINT USING "##";III(J),
  146. 4257 PRINT USING "###.#";AAA(1,J),
  147. 4258 PRINT USING "####.##";AAA(2,J),AAA(3,J),
  148. 4259 PRINT USING "#####.";AAA(4,J),AAA(5,J),
  149. 4260 PRINT USING "####.###";AAA(6,J),
  150. 4261 PRINT USING "####.#";AAA(7,J),:PRINT USING "###.#";AAA(8,J)
  151. 4262 IF NPRINT=1, THEN GOTO 4266, :ELSE GOTO 4310
  152. 4266 LPRINT USING "###";III(J),
  153. 4267 LPRINT USING "###.#";AAA(1,J),
  154. 4268 LPRINT USING "#####.##";AAA(2,J),AAA(3,J),
  155. 4269 LPRINT USING "#######.";AAA(4,J),AAA(5,J),
  156. 4270 LPRINT USING "####.###   ";AAA(6,J),
  157. 4271 LPRINT USING "######.#";AAA(7,J),:LPRINT USING "###.#";AAA(8,J)
  158. 4310 NEXT J
  159. 4320 PRINT "SATELLITE VISIBLE FOR ",XNSITE," MINUTES."
  160. 4325 IF NPRINT=1, THEN LPRINT "SATELLITE VISIBLE FOR ",XNSITE," MINUTES."
  161. 4330 PRINT "-------------------------------------------------------------------------------"
  162. 4335 IF NPRINT=1, THEN LPRINT "-------------------------------------------------------------------------------"
  163. 4340 GOTO 4380
  164. 4342 PRINT " HR  MIN     LAT.      LON.     DIST.       AZ     EL"
  165. 4344 IF NPRINT=1, THEN  LPRINT
  166. 4346 IF NPRINT=1, THEN LPRINT "HR  MIN   LAT.   LON.  DIST.    AZ    EL"
  167. 4350 FOR J=1 TO JEND
  168. 4352 PRINT USING "##";JJJ(J),
  169. 4353 PRINT USING "###.#";BBB(1,J),
  170. 4354 PRINT USING "####.##";BBB(2,J),BBB(3,J),
  171. 4355 PRINT USING "#####.";BBB(4,J),
  172. 4356 PRINT USING "####.##";BBB(5,J),BBB(6,J)
  173. 4361 IF NPRINT=1, THEN GOTO 4362, :ELSE GOTO 4369
  174. 4362 LPRINT USING "##";JJJ(J),
  175. 4363 LPRINT USING "###.#";BBB(1,J),
  176. 4364 LPRINT USING "####.##";BBB(2,J),BBB(3,J),
  177. 4365 LPRINT USING "######.";BBB(4,J),
  178. 4366 LPRINT USING "####.##";BBB(5,J),BBB(6,J)
  179. 4369 NEXT J
  180. 4370 PRINT "SATELLITE VISIBLE FOR ",XNSITE," MINUTES."
  181. 4375 IF NPRINT=1, THEN LPRINT "SATELLITE VISIBLE FOR ",XNSITE," MINUTES."
  182. 4377 PRINT "-------------------------------------------------------------------------------"
  183. 4378 IF NPRINT=1, THEN LPRINT "-------------------------------------------------------------------------------"
  184. 4380 NADD=NADD-1
  185. 4390 IF NADD=0, THEN GOTO 9999, :ELSE GOTO 3030
  186. 9999 INPUT "WOULD YOU LIKE TO RERUN THE PROGRAM (1=YES)",NRERUN
  187.          IF NRERUN=1, THEN GOTO 1105
  188.          END
  189.  
  190.  
  191.